﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.AbmUsuario;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;
using VentaElectrodomesticos.Utilities;

namespace VentaElectrodomesticos.AbmEmpleado
{
    public partial class FormEditarEmpleado : Form
    {
        private String id;
        private ClaseSQL sql;

        public FormEditarEmpleado(String id, 
                                  String dni, 
                                  String nombre, 
                                  String apellido, 
                                  String mail, 
                                  String telefono, 
                                  String direccion,
                                  String idProvincia,
                                  String status,
                                  String idTipo,
                                  String idSucursal)
        {
            InitializeComponent();
            sql = new ClaseSQL();
            Usuario usuario = new Usuario();
            usuario.llenarProvincias(this.comboBoxProvincias);
            usuario.llenarTipos(this.comboBoxTipo);
            usuario.llenarSucursales(this.comboBoxSucursal);
            this.setEmpleado(id, dni, nombre, apellido, mail, telefono, direccion, idProvincia, status, idTipo, idSucursal);
            if (status.Equals("0"))
            {
                btnHabilitar.Visible = true;
            }
        }

        private void setEmpleado(String id,
                                  String dni,
                                  String nombre,
                                  String apellido,
                                  String mail,
                                  String telefono,
                                  String direccion,
                                  String provincia,
                                  String status,
                                  String tipo,
                                  String idSucursal)
        {
            this.id = id;
            this.textBoxDni.Text = dni;
            this.textBoxNombre.Text = nombre;
            this.textBoxApellido.Text = apellido;
            this.textBoxMail.Text = mail;
            this.textBoxTelefono.Text = telefono;
            this.textBoxDireccion.Text = direccion;
            this.comboBoxProvincias.SelectedItem = provincia;
            this.comboBoxTipo.SelectedItem = tipo;
            this.comboBoxSucursal.SelectedItem = idSucursal;
        }

        private void buttonAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                sql.Open();
                String[,] parametros = new String[2, 6];
                String sp = "LAG.sp_modificarEmpleado";
                parametros[0, 0] = "@id";
                parametros[0, 1] = "@nombre";
                parametros[0, 2] = "@apellido";
                parametros[0, 3] = "@mail";
                parametros[0, 4] = "@telefono";
                parametros[0, 5] = "@direccion";

                parametros[1, 0] = this.id;
                parametros[1, 1] = this.textBoxNombre.Text;
                parametros[1, 2] = this.textBoxApellido.Text;
                parametros[1, 3] = this.textBoxMail.Text;
                parametros[1, 4] = this.textBoxTelefono.Text;
                parametros[1, 5] = this.textBoxDireccion.Text;

                if (this.textBoxNombre.Text != ""
                    && this.textBoxApellido.Text != ""
                    && this.textBoxMail.Text != ""
                    && this.textBoxTelefono.Text != ""
                    && this.textBoxDireccion.Text != "")
                {
                    //se hace el insert de los datos 
                    SqlDataReader reader = sql.ejecutarStoredProcedure(sp, parametros);
                    if (reader != null)
                    {
                        MessageBox.Show("Se han modificado los datos del Empleado.", "Success!");
                        this.Close();
                    }
                }
                else {
                    MessageBox.Show("Faltan completar datos.", "Success!"); 
                }
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error app");
            }
            finally
            {
                sql.Close();
            }
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private bool validarCampos()
        {
            bool vDni = this.validarDni();
            bool vNombre = !Utils.campoVacio(textBoxNombre, errorProvider, "Ingrese un nombre");
            bool vApellido = !Utils.campoVacio(textBoxApellido, errorProvider, "Ingrese un apellido");
            bool vMail = !Utils.campoVacio(textBoxMail, errorProvider, "Ingrese un mail");
            bool vTelefono = !Utils.campoVacio(textBoxTelefono, errorProvider, "Ingrese un telefono");
            bool vDireccion = !Utils.campoVacio(textBoxDireccion, errorProvider, "Ingrese una direccion");
            bool vProvincia = !Utils.campoVacio(comboBoxProvincias, errorProvider, "Seleccione una provincia");
            bool vSucursal = !Utils.campoVacio(comboBoxSucursal, errorProvider, "Seleccione una sucursal");
            bool vTipo = !Utils.campoVacio(comboBoxTipo, errorProvider, "Seleccione un tipo");

            return vDni && vNombre && vApellido && vMail && vTelefono && vDireccion && vProvincia && vSucursal && vTipo;
        }

        private bool validarDni()
        {
            bool valido = true;

            if (textBoxDni.Text.Trim().Length == 0)
            {
                valido = false;
                errorProvider.SetError(textBoxDni, "Ingrese un numero de DNI");
            }
            else
            {
                errorProvider.SetError(textBoxDni, "");
            }

            return valido;
        }


        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9\b]+"))
                e.Handled = true;
        }

        private void btnHabilitar_Click(object sender, EventArgs e)
        {
            bool habilitado = sql.habilitarRegistro("LAG.personas", "idPersona", id);

            if (habilitado)
            {
                btnHabilitar.Visible = false;
            }
        }
    }
}
